Data swapping refers to an operation in which the data stored on two storage volumes are exchanged (i.e., the data stored on volume A is copied to volume B and the data stored on volume B is copied to volume A). Data swapping may be needed for data migration or, for example, when a host (e.g., a software application) is working on volume A and needs more storage than that available on volume A, or if volume A is not as fast as desirable for the intended purpose of the host. If a larger or a faster volume B is available, data between the two volumes may be swapped to accommodate the host.
Typically, to swap data between two volumes A and B, data stored on volume A is first stored on a third volume. Then the data stored on volume B is transferred to volume A. Thereafter, the data copied to the third volume (i.e., the original content of volume A) is transferred to volume B. To avoid data loss, all I/O access requests (e.g., read or write requests) to both volumes A and B are suspended during the swapping process. Thus, unfortunately, the swapping process often results in system downtime which is highly undesirable and costly, particularly where large volumes of data are to be swapped.
Methods and systems are needed that can overcome the aforementioned shortcomings.